package org.example;

import java.util.Arrays;
import java.util.List;

/**
 * 1.对于可变参数,如果传的是一个引用对象数组,编译器会直接将该数组直接其赋给可变参数.
 * 2.1 对于可变参数,如果传的是单个引用对象,编译器会构造一个该引用类型的数组,将其赋给可变参数.
 * 2.2 如果是传递的是"基本数据数组",则可变参数不会直接使用,编译器会将这个"基本数据数组"当做
 *      一个"普通引用对象",并生成这个"普通引用对象" 数组
 */

public class AppVarArgs {
    public static void main(String[] args) {

        int[] arr = {11,22};
        List<int[]> ints = Arrays.asList(arr);



//        int[] arr = {11, 22}; // int[] 基本数据数组被看成一个"引用对象",而可变参数是"引用对象数组"
//        List<int[]> ints11 = Arrays.asList( new int[][] {arr} );
//----------------------------------------------------------------------------------
        int[][] arr2= {{11,22},{33,44}};
        List<int[]> ints2 = Arrays.asList(arr2);
        List<? extends Cloneable> cloneables = Arrays.asList(arr2, arr);


//        int[][] arr2 = { {11, 22}, {33, 44} };
//        List<int[]> ints2 = Arrays.asList(arr2);
//----------------------------------------------------------------------------------
        Integer[] arr3= {11,22};
        List<Integer> integers1 = Arrays.asList(arr3);



//        Integer[] arr3 = { Integer.valueOf(11), Integer.valueOf(22) };
//        List<Integer> integers1 = Arrays.asList(arr3); // Integer[]  是一个"引用对象数组",直接就匹配了.
//----------------------------------------------------------------------------------
        Integer[][] arr4= {{11,22},{33,44}};
        List<Integer[]> integers2 = Arrays.asList(arr4);



//        Integer[][] arr4 = { {Integer.valueOf(11), Integer.valueOf(22)},
//                {Integer.valueOf(33), Integer.valueOf(44)}
//        };
//        List<Integer[]> integers2 = Arrays.asList( arr4 );
//----------------------------------------------------------------------------------
        Person person=new Person();
        List<Person> tests = Arrays.asList(person);



//        Test test = new Test();
//        List<Test> tests = Arrays.asList( new Test[] { test } );
//----------------------------------------------------------------------------------
        Person[] person1={ new Person() } ;
        List<Person> tests2 = Arrays.asList(person1);



//        Test[]  tests1= { new Test() };
//        List<Test> tests2 = Arrays.asList( tests1 );
//----------------------------------------------------------------------------------


    }


}
